import Vue from 'vue';
import Vuex from 'vuex';

import { setToken } from '@/utils/cache';

Vue.use(Vuex);

const store = new Vuex.Store({
	state: {
		userPageShow: false, // 是否显示用户页面
		isMobile: false, // 是否是移动端
		loading: false, // 加载动画
		isLogin: sessionStorage.getItem('isLogin') || false, // 是否登录
		userInfo: sessionStorage.getItem('userInfo') || null, // 用户信息
		pageActiveIndex: 0, // 页面激活索引
	},
	actions: {
		/** @method 判断是否为手机端【业务逻辑】  */
		isMobile({ commit }) {
			const flag = navigator.userAgent;
			flag.match(
				/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i
			)
				? commit('isMobile', true)
				: commit('isMobile', false);
		},
		/** @method 用户登录业务逻辑处理 */
		userLogin({ commit }, UserInfo) {
			sessionStorage.setItem('isLogin', true);
			sessionStorage.setItem('userInfo', JSON.stringify(UserInfo));
			setToken(UserInfo.token);
			commit('userLogin', UserInfo);
		},
	},
	mutations: {
		/** @method 修改用户页面显示状态*/
		changeUserPageShow(state) {
			state.userPageShow = !state.userPageShow;
		},
		/** @method 判断是否为手机端【修改状态值】 */
		isMobile(state, flag) {
			state.isMobile = flag;
		},
		/** @method 修改加载动画状态*/
		loading(state, loading) {
			state.loading = loading;
		},
		/** 修改用户登录状态 */
		userLogin(state, userInfo) {
			state.userInfo = userInfo;
			state.isLogin = true;
		},
		/** @method  修改首页Tabs激活索引 */
		changePageActiveIndex(state, val) {
			state.pageActiveIndex = val;
		},
	},
});

export default store;
